var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  var c = arguments.length,
    r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
    d;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i = decorators.length - 1; i >= 0; i--)
      if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import {
  SuperComponent,
  wxComponent
} from '../common/src/index';
import config from '../common/config';
import props from './props';
const {
  prefix
} = config;
const name = `${prefix}-navbar`;
let Navbar = class Navbar extends SuperComponent {
  constructor() {
    super(...arguments);
    this.externalClasses = [
      `${prefix}-class`,
      `${prefix}-class-title`,
      `${prefix}-class-left`,
      `${prefix}-class-center`,
      `${prefix}-class-left-icon`,
      `${prefix}-class-home-icon`,
      `${prefix}-class-capsule`,
      `${prefix}-class-nav-btn`,
    ];
    this.timer = null;
    this.options = {
      addGlobalClass: true,
      multipleSlots: true,
    };
    this.properties = props;
    this.observers = {
      visible(visible) {
        const {
          animation,scrollTop
        } = this.properties;
        const visibleClass = `${name}${visible ? '--visible' : '--hide'}`;
        this.setData({
          visibleClass: `${visibleClass}${animation ? '-animation' : ''}`,
          scrollTop
        });
        if (this.timer) {
          clearTimeout(this.timer);
        }
        if (animation) {
          this.timer = setTimeout(() => {
            this.setData({
              visibleClass,
            });
          }, 300);
        }
      },
      'title,titleMaxLength'() {
        const {
          title
        } = this.properties;
        const titleMaxLength = this.properties.titleMaxLength || Number.MAX_SAFE_INTEGER;
        let temp = title.slice(0, titleMaxLength);
        if (titleMaxLength < title.length)
          temp += '...';
        this.setData({
          showTitle: temp,
        });
      },
    };
    this.data = {
      prefix,
      classPrefix: name,
      boxStyle: '',
      showTitle: '',
      scrollTop: 0
    };
    this.methods = {
      goBack() {
        const {
          delta
        } = this.data;
        const that = this;
        this.triggerEvent('go-back');
        if (delta > 0) {
          wx.navigateBack({
            delta,
            fail(e) {
              that.triggerEvent('fail', e);
            },
            complete(e) {
              that.triggerEvent('complete', e);
            },
            success(e) {
              that.triggerEvent('success', e);
            },
          });
        }
      },
    };
  }
  attached() {
    let rect = null;
    if (wx.getMenuButtonBoundingClientRect) {
      rect = wx.getMenuButtonBoundingClientRect();
    }
    if (!rect)
      return;
    wx.getSystemInfo({
      success: (res) => {
        const boxStyleList = [];
        const {
          statusBarHeight
        } = wx.getSystemInfoSync();
        boxStyleList.push(`--td-navbar-padding-top:${statusBarHeight}px`);
        if (rect && (res === null || res === void 0 ? void 0 : res.windowWidth)) {
          boxStyleList.push(`--td-navbar-right:${res.windowWidth - rect.left}px`);
        }
        boxStyleList.push(`--td-navbar-capsule-height: ${rect.height}px`);
        boxStyleList.push(`--td-navbar-capsule-width: ${rect.width}px`);
        boxStyleList.push(`--td-navbar-height: ${(rect.top - statusBarHeight) * 2 + rect.height}px`);
        this.setData({
          boxStyle: `${boxStyleList.join('; ')}`,
        });
      },
      fail: (err) => {
        console.error('navbar 获取系统信息失败', err);
      },
    });
  }
};
Navbar = __decorate([
  wxComponent()
], Navbar);
export default Navbar;